package com.baixun.gasentity.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @TableName sys_video_message
 */
@TableName(value ="sys_video_message")
@Data
public class SysVideoMessage implements Serializable {
    /**
     * 视频中台摄像头表主键id
     */
    @TableId
    @ApiModelProperty(value = "视频中台摄像头表主键id")
    private Long id;

    /**
     * 父级id，最高级为0
     */
    @ApiModelProperty(value = "父级id，最高级为0")
    private Long parentId;


    /**
     * 类型枚举，用于表示对象的类型。
     */
    @ApiModelProperty(value = "类型枚举，用于表示对象的类型", example = "TYPE1")
    private String type;

    /**
     * 在线点数计数，表示在线的点数。
     */
    @ApiModelProperty(value = "在线点数计数，表示在线的点数", example = "100")
    private Integer onlinePointCount;

    /**
     * 点数计数，表示总的点数。
     */
    @ApiModelProperty(value = "点数计数，表示总的点数", example = "200")
    private Integer pointCount;

    /**
     * 点状态，表示点的状态信息。
     */
    @ApiModelProperty(value = "点状态，表示点的状态信息", example = "ACTIVE")
    private String pointStatus;


    @ApiModelProperty(value = "点位名称", example = "12345")
    private String pointName;

    @ApiModelProperty(value = "标签类型", example = "[\"tag1\", \"tag2\"]")
    private String  tagType;

    @ApiModelProperty(value = "标签名称", example = "[\"tag1\", \"tag2\"]")
    private String  tagName;

    @ApiModelProperty(value = "位置描述", example = "上海市浦东新区")
    private String location;

    @ApiModelProperty(value = "纬度", example = "31.2304")
    private Double latitude;

    @ApiModelProperty(value = "经度", example = "121.4737")
    private Double longitude;



    /**
     * 孩子节点
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "孩子节点")
    private List<SysVideoMessage> sysVideoMessageList;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /**
     * 获取孩子节点列表，若列表为空则初始化
     * @return 子节点列表
     */
    public List<SysVideoMessage> getSysVideoMessageList() {
        if (sysVideoMessageList == null) {
            sysVideoMessageList = new ArrayList<>(); // 自动初始化子节点列表
        }
        return sysVideoMessageList;
    }

    /**
     * 设置孩子节点列表
     * @param sysVideoMessageList 子节点列表
     */
    public void setSysVideoMessageList(List<SysVideoMessage> sysVideoMessageList) {
        this.sysVideoMessageList = sysVideoMessageList;
    }

}
